Hipotezė - 90% klientų užsakymų pristatomi laiku¶

Tikslai:¶

Palyginti žadėtą ir faktinį tranzito laiką išskirtant rezultatutus pagal servisą bei šalį¶

Nustatyti silpnąsias bei stipriąsias tranzito laiko vietas¶

Pateikti rekomendacijas dėl tranzito laiko korekcijos sales komandai¶

Darbui reikalingų paketų importavimas¶

In [610]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime,date, time, timedelta

Duomenų sukėlimas į Jupyter¶

In [1219]:
data = pd.read_excel(r'C:\...\DATA.xlsx',index_col= 0)
In [1220]:
TT = pd.read_excel(r'C:\...\transit time.xlsx', index_col= 0)

Greitoji failų analizė, susipažinimas su duomenimis¶

In [1151]:
TT.info()
<class 'pandas.core.frame.DataFrame'>
Index: 15 entries, HK to KR
Data columns (total 3 columns):
 #   Column   Non-Null Count  Dtype 
---  ------   --------------  ----- 
 0   MIN      15 non-null     int64 
 1   MAX      15 non-null     int64 
 2   Service  15 non-null     object
dtypes: int64(2), object(1)
memory usage: 480.0+ bytes
In [426]:
data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 978 entries, 5504232 to 5560532
Data columns (total 13 columns):
 #   Column          Non-Null Count  Dtype         
---  ------          --------------  -----         
 0   Service         978 non-null    object        
 1   CountryFrom     978 non-null    object        
 2   Uploading       978 non-null    object        
 3   Pcs             978 non-null    int64         
 4   BrKG            978 non-null    float64       
 5   Vol             978 non-null    float64       
 6   Ordered         978 non-null    datetime64[ns]
 7   ETD             978 non-null    datetime64[ns]
 8   ATD             978 non-null    datetime64[ns]
 9   ETA             978 non-null    datetime64[ns]
 10  ATA             978 non-null    datetime64[ns]
 11  UnitTruckRegnr  889 non-null    object        
 12  Unloading       961 non-null    object        
dtypes: datetime64[ns](5), float64(2), int64(1), object(5)
memory usage: 107.0+ KB
In [1221]:
data.head(3)
Out[1221]:
Service CountryFrom Uploading Pcs BrKG Vol Ordered ETD ATD ETA ATA UnitTruckRegnr Unloading
FileNr
5504232 ML CN XIAMEN 2 118.0 0.80 2022-07-08 2022-08-28 2022-08-28 2022-10-31 2022-10-31 NaN TALINAS
5500356 ML JP Osaka 6 299.6 1.35 2022-06-22 2022-07-06 2022-07-08 2022-10-17 2022-10-17 NaN TALINAS
5506509 ML CN TIANJIN 3 512.0 3.72 2022-07-19 2022-08-07 2022-08-08 2022-10-17 2022-10-17 NaN KLAIPEDA
In [1222]:
TT.head(3)
Out[1222]:
MIN MAX Service
CountryFrom
HK 55 65 ML
KR 55 65 ML
TW 55 65 ML

Papildomų funkcijų kūrimas¶

In [1338]:
def actual_TT(s):
    return s['ATA'] - s['ATD']
In [1341]:
data['actual_TT'] = data.apply(actual_TT,axis= 'columns')
data.head(3)
Out[1341]:
Service CountryFrom Uploading Pcs BrKG Vol Ordered ETD ATD ETA ATA UnitTruckRegnr Unloading actual_TT
FileNr
5504232 ML CN XIAMEN 2 118.0 0.80 2022-07-08 2022-08-28 2022-08-28 2022-10-31 2022-10-31 NaN TALINAS 64 days
5500356 ML JP Osaka 6 299.6 1.35 2022-06-22 2022-07-06 2022-07-08 2022-10-17 2022-10-17 NaN TALINAS 101 days
5506509 ML CN TIANJIN 3 512.0 3.72 2022-07-19 2022-08-07 2022-08-08 2022-10-17 2022-10-17 NaN KLAIPEDA 70 days
In [1337]:
data['actual_TT'] = data['actual_TT'].dt.days
print(data.actual_TT.dtype)
int64
In [1226]:
data['actual_TT'] = data['actual_TT'].astype(int)
In [1227]:
Actual_TT_intervals = data.groupby(['Service', 'CountryFrom'])['actual_TT'].agg([min, max])
Actual_TT_intervals.rename(columns = {'min':'min_actual','max':'max_actual'}, inplace = True)
Actual_TT_intervals.head(5)
Out[1227]:
min_actual max_actual
Service CountryFrom
ML CA 45 82
CN 35 75
HK 50 85
IL 53 53
IN 42 67

Lentelių sujungimas¶

In [1243]:
pd.merge(TT, Actual_TT_intervals, on=['CountryFrom', 'Service'], suffixes=('_offered', '_actual')) 
#trumpai apžvelgiam min ir max faktinį atvykimą pagal šalį bei servisą su tuo kas buvo žadėta:
Out[1243]:
MIN MAX Service min_actual max_actual
CountryFrom
HK 55 65 ML 50 85
KR 55 65 ML 66 80
TW 55 65 ML 42 64
JP 55 65 ML 80 101
CN 50 55 ML 35 75
IN 50 60 ML 42 67
US 40 50 ML 32 82
IL 50 60 ML 53 53
MY 55 65 ML 60 60
VN 55 65 ML 57 78
TH 55 65 ML 58 76
PH 55 65 ML 65 71
CA 40 50 ML 45 82
CN 18 22 RW 13 28
KR 45 50 RW 47 58
In [1244]:
offered_vs_actual = pd.merge(data, TT, on=['CountryFrom', 'Service'], suffixes=('_Actual', '_offered'))
offered_vs_actual = offered_vs_actual.drop(['Pcs', 'BrKG','Vol','UnitTruckRegnr', 'ETD','ETA','Unloading'], axis = 1)
offered_vs_actual.head(10) #sujungiame lenteles kad matytume kas buvo žadėta ir kaip atvyko faktiškai vienoje lentelėje
Out[1244]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX
0 ML CN XIAMEN 2022-07-08 2022-08-28 2022-10-31 64 50 55
1 ML CN TIANJIN 2022-07-19 2022-08-08 2022-10-17 70 50 55
2 ML CN YANTIAN 2022-07-21 2022-09-15 2022-10-24 39 50 55
3 ML CN YANTIAN 2022-07-26 2022-09-15 2022-10-24 39 50 55
4 ML CN YANTIAN 2022-08-05 2022-09-15 2022-10-24 39 50 55
5 ML CN YANTIAN 2022-08-12 2022-09-15 2022-10-24 39 50 55
6 ML CN YANTIAN 2022-08-12 2022-09-15 2022-10-24 39 50 55
7 ML CN YANTIAN 2022-08-12 2022-09-15 2022-10-24 39 50 55
8 ML CN YANTIAN 2022-08-12 2022-09-15 2022-10-24 39 50 55
9 ML CN YANTIAN 2022-08-16 2022-09-15 2022-10-24 39 50 55
In [1245]:
def uzsakymai(s):
        if s['actual_TT'] <= s['MAX']:
            return("laiku")
        else:
            return("pavėlavo")
#apibrėžiam kas skaitosi pavėlavęs užsakymas
In [1246]:
offered_vs_actual['uzsakymai'] = offered_vs_actual.apply(uzsakymai, axis='columns')
offered_vs_actual.loc[:10,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai']]
Out[1246]:
Service CountryFrom Uploading MAX actual_TT uzsakymai
0 ML CN XIAMEN 55 64 pavėlavo
1 ML CN TIANJIN 55 70 pavėlavo
2 ML CN YANTIAN 55 39 laiku
3 ML CN YANTIAN 55 39 laiku
4 ML CN YANTIAN 55 39 laiku
5 ML CN YANTIAN 55 39 laiku
6 ML CN YANTIAN 55 39 laiku
7 ML CN YANTIAN 55 39 laiku
8 ML CN YANTIAN 55 39 laiku
9 ML CN YANTIAN 55 39 laiku
10 ML CN YANTIAN 55 39 laiku
In [1247]:
offered_vs_actual['uzsakymai'].value_counts()
Out[1247]:
laiku       840
pavėlavo    138
Name: uzsakymai, dtype: int64
In [1248]:
Visi_uzsakymai=offered_vs_actual['uzsakymai'].value_counts()
In [1249]:
Visi_uzsakymai.plot.pie(autopct='%1.1f%%',title = 'Bendras užsakymų įvykdymas',colors= ['#9FE331', 'tomato'])
Out[1249]:
<AxesSubplot:title={'center':'Bendras užsakymų įvykdymas'}, ylabel='uzsakymai'>

Analizuojame kiekvieno serviso užsakymų įvykdymą:¶

Rail užsakymai¶

In [1250]:
Rail = offered_vs_actual[offered_vs_actual['Service'] == 'RW'].copy()
Rail.loc[:215,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai']]
#atskiriam geležinkelio užsakymus
Out[1250]:
Service CountryFrom Uploading MAX actual_TT uzsakymai
205 RW CN XIAN 22 15 laiku
206 RW CN XIAN 22 15 laiku
207 RW CN XIAN 22 15 laiku
208 RW CN XIAN 22 15 laiku
209 RW CN XIAN 22 15 laiku
210 RW CN XIAN 22 15 laiku
211 RW CN XIAN 22 15 laiku
212 RW CN XIAN 22 15 laiku
213 RW CN XIAN 22 15 laiku
214 RW CN XIAN 22 15 laiku
215 RW CN XIAN 22 15 laiku
In [1251]:
Rail['uzsakymai'].value_counts()
Out[1251]:
laiku       605
pavėlavo     41
Name: uzsakymai, dtype: int64
In [1252]:
Rail_uzsakymai=Rail['uzsakymai'].value_counts()
In [1253]:
Rail_uzsakymai.plot.pie(autopct='%1.1f%%', title = 'Rail užsakymų įvykdymas', colors= ['#9FE331', 'tomato'])
Out[1253]:
<AxesSubplot:title={'center':'Rail užsakymų įvykdymas'}, ylabel='uzsakymai'>
In [1254]:
def anksciau(s):
    return s['MAX'] - s['actual_TT']
In [1255]:
Rail['dienu_skirtumas'] = Rail.apply(anksciau, axis = 'columns')
Rail.loc[:215,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai','dienu_skirtumas']]
Out[1255]:
Service CountryFrom Uploading MAX actual_TT uzsakymai dienu_skirtumas
205 RW CN XIAN 22 15 laiku 7
206 RW CN XIAN 22 15 laiku 7
207 RW CN XIAN 22 15 laiku 7
208 RW CN XIAN 22 15 laiku 7
209 RW CN XIAN 22 15 laiku 7
210 RW CN XIAN 22 15 laiku 7
211 RW CN XIAN 22 15 laiku 7
212 RW CN XIAN 22 15 laiku 7
213 RW CN XIAN 22 15 laiku 7
214 RW CN XIAN 22 15 laiku 7
215 RW CN XIAN 22 15 laiku 7
In [1256]:
Rail.groupby('dienu_skirtumas')['Uploading'].count()
#pasižiūrime kaip išsibarstę atvykimai kad nustatyti periodus funkcijai
Out[1256]:
dienu_skirtumas
-8      1
-6     21
-2     19
 1     26
 2     24
 3     25
 4     97
 5    133
 6     88
 7    136
 8     45
 9     31
Name: Uploading, dtype: int64
In [1257]:
def atvykimas(s):
        if s['MAX'] - s['actual_TT'] >= 7:
            return("atvyko 7 ir daugiau dienomis anksčiau")
        elif 5 <= s['MAX'] - s['actual_TT'] < 7:
            return("atvyko nuo 5 iki 7 dienų anksčiau")
        elif 0 <= s['MAX'] - s['actual_TT'] < 5:
            return("atvyko laiku")
        elif s['dienu_skirtumas'] == -2:
            return("pavėlavo 2 dienomis")
        elif s['dienu_skirtumas'] == -6:
            return("pavėlavo 6 dienomis")
        else: 
            return("pavėlavo 8 dienomis")
In [1258]:
Rail['atvykimas'] = Rail.apply(atvykimas, axis='columns')
Rail.loc[:500,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai','atvykimas']]
Out[1258]:
Service CountryFrom Uploading MAX actual_TT uzsakymai atvykimas
205 RW CN XIAN 22 15 laiku atvyko 7 ir daugiau dienomis anksčiau
206 RW CN XIAN 22 15 laiku atvyko 7 ir daugiau dienomis anksčiau
207 RW CN XIAN 22 15 laiku atvyko 7 ir daugiau dienomis anksčiau
208 RW CN XIAN 22 15 laiku atvyko 7 ir daugiau dienomis anksčiau
209 RW CN XIAN 22 15 laiku atvyko 7 ir daugiau dienomis anksčiau
... ... ... ... ... ... ... ...
496 RW CN XIAN 22 17 laiku atvyko nuo 5 iki 7 dienų anksčiau
497 RW CN XIAN 22 21 laiku atvyko laiku
498 RW CN XIAN 22 17 laiku atvyko nuo 5 iki 7 dienų anksčiau
499 RW CN XIAN 22 21 laiku atvyko laiku
500 RW CN XIAN 22 17 laiku atvyko nuo 5 iki 7 dienų anksčiau

296 rows × 7 columns

In [1259]:
Detalus_rail=Rail['atvykimas'].value_counts()
In [1260]:
Detalus_rail.plot.pie(autopct='%1.1f%%', title = 'Detalesnė Rail užsakymų analizė', colors= ['yellowgreen', 'green', 'plum', 'tomato', 'darkorange','gold'])
Out[1260]:
<AxesSubplot:title={'center':'Detalesnė Rail užsakymų analizė'}, ylabel='atvykimas'>
In [1261]:
rail_min = Rail['actual_TT'].min(axis=0)
rail_min
Out[1261]:
13
In [1262]:
rail_CN = Rail[Rail['CountryFrom'] =='CN']
In [1263]:
rail_CN['actual_TT'].mean()
Out[1263]:
17.10248447204969
In [1264]:
rail_KR = Rail[Rail['CountryFrom'] =='KR']
In [1265]:
rail_KR['actual_TT'].mean()
Out[1265]:
52.5
In [1266]:
Rail[Rail['dienu_skirtumas'] > 0].sort_values(by='ATA',ascending = False)
#matome kad didelė dalis krovinių atvyko anksčiau, kadangi paskutiniai kroviniai atvyko anksčiau, 
#vidutinis TT laikas sudaro 17d, būtų galima mažinti tranzitinį laiką pasiūlymuose iki 16-18d
Out[1266]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas atvykimas
841 RW CN CHENGDU 2023-02-28 2023-03-22 2023-04-06 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
848 RW CN CHENGDU 2023-03-02 2023-03-22 2023-04-06 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
847 RW CN CHENGDU 2023-03-01 2023-03-22 2023-04-06 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
846 RW CN CHENGDU 2023-03-01 2023-03-22 2023-04-06 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
845 RW CN CHENGDU 2023-03-01 2023-03-22 2023-04-06 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
... ... ... ... ... ... ... ... ... ... ... ... ...
225 RW CN XIAN 2022-09-20 2022-10-02 2022-10-17 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
226 RW CN XIAN 2022-09-20 2022-10-02 2022-10-17 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
227 RW CN XIAN 2022-09-20 2022-10-02 2022-10-17 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
228 RW CN XIAN 2022-09-29 2022-10-02 2022-10-17 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau
205 RW CN XIAN 2022-08-16 2022-10-02 2022-10-17 15 18 22 laiku 7 atvyko 7 ir daugiau dienomis anksčiau

605 rows × 12 columns

Rail pavėluotai pristatyti užsakymai¶

In [1267]:
Pavėluotas_rail = Rail[Rail['actual_TT'] > Rail['MAX']] 
In [1268]:
Pavėluotas_rail.groupby('dienu_skirtumas').agg({'dienu_skirtumas': 'count', 'MAX':'max', 'actual_TT': 'max'})
Out[1268]:
dienu_skirtumas MAX actual_TT
dienu_skirtumas
-8 1 50 58
-6 21 22 28
-2 19 22 24
In [1269]:
Pavėluotas_rail[Pavėluotas_rail['dienu_skirtumas'] <= -2].sort_values(by='ATA',ascending = False) 
Out[1269]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas atvykimas
719 RW CN XIAN 2023-01-05 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
729 RW CN XIAN 2023-01-10 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
718 RW CN XIAN 2023-01-05 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
722 RW CN XIAN 2023-01-06 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
723 RW CN XIAN 2023-01-06 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
724 RW CN XIAN 2023-01-06 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
725 RW CN XIAN 2023-01-09 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
726 RW CN XIAN 2023-01-09 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
727 RW CN XIAN 2023-01-09 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
728 RW CN XIAN 2023-01-10 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
730 RW CN XIAN 2023-01-10 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
720 RW CN XIAN 2023-01-06 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
731 RW CN XIAN 2023-01-10 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
732 RW CN XIAN 2023-01-10 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
733 RW CN XIAN 2023-01-10 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
734 RW CN XIAN 2023-01-10 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
735 RW CN XIAN 2023-01-11 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
736 RW CN XIAN 2023-01-11 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
737 RW CN XIAN 2023-01-13 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
738 RW CN XIAN 2023-01-13 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
721 RW CN XIAN 2023-01-06 2023-02-14 2023-03-14 28 18 22 pavėlavo -6 pavėlavo 6 dienomis
975 RW KR WUHAN 2022-11-29 2022-12-10 2023-02-06 58 45 50 pavėlavo -8 pavėlavo 8 dienomis
631 RW CN XIAN 2022-11-25 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
639 RW CN XIAN 2022-12-12 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
632 RW CN XIAN 2022-12-06 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
633 RW CN XIAN 2022-12-08 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
634 RW CN XIAN 2022-12-08 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
635 RW CN XIAN 2022-12-09 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
636 RW CN XIAN 2022-12-12 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
637 RW CN XIAN 2022-12-12 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
638 RW CN XIAN 2022-12-12 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
640 RW CN XIAN 2022-12-13 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
648 RW CN XIAN 2023-01-03 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
641 RW CN XIAN 2022-12-13 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
642 RW CN XIAN 2022-12-13 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
643 RW CN XIAN 2022-12-13 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
644 RW CN XIAN 2022-12-13 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
645 RW CN XIAN 2022-12-13 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
646 RW CN XIAN 2022-12-14 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
647 RW CN XIAN 2022-12-14 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
630 RW CN XIAN 2022-10-26 2023-01-02 2023-01-26 24 18 22 pavėlavo -2 pavėlavo 2 dienomis
In [1270]:
Rail_vėvavimai=Pavėluotas_rail.groupby('dienu_skirtumas')['Uploading'].count()
In [1394]:
Rail_vėvavimai.plot.pie(autopct='%1.1f%%', title = 'Vėluojančių Rail užsakymų analizė', colors= ['tomato','orange','gold'])
Out[1394]:
<AxesSubplot:title={'center':'Vėluojančių Rail užsakymų analizė'}, ylabel='Uploading'>

CN Rail tranzito laiko tendencijos pagal mėnesius¶

In [1272]:
Rail_CN=rail_CN.drop(['Service', 'CountryFrom', 'Ordered','atvykimas','dienu_skirtumas'], axis = 1).copy()
Rail_CN
Out[1272]:
Uploading ATD ATA actual_TT MIN MAX uzsakymai
205 XIAN 2022-10-02 2022-10-17 15 18 22 laiku
206 XIAN 2022-10-02 2022-10-17 15 18 22 laiku
207 XIAN 2022-10-02 2022-10-17 15 18 22 laiku
208 XIAN 2022-10-02 2022-10-17 15 18 22 laiku
209 XIAN 2022-10-02 2022-10-17 15 18 22 laiku
... ... ... ... ... ... ... ...
844 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku
845 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku
846 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku
847 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku
848 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku

644 rows × 7 columns

In [1273]:
Rail_CN['year/month'] = pd.to_datetime(Rail_CN['ATA']).dt.to_period('M')
Rail_CN
Out[1273]:
Uploading ATD ATA actual_TT MIN MAX uzsakymai year/month
205 XIAN 2022-10-02 2022-10-17 15 18 22 laiku 2022-10
206 XIAN 2022-10-02 2022-10-17 15 18 22 laiku 2022-10
207 XIAN 2022-10-02 2022-10-17 15 18 22 laiku 2022-10
208 XIAN 2022-10-02 2022-10-17 15 18 22 laiku 2022-10
209 XIAN 2022-10-02 2022-10-17 15 18 22 laiku 2022-10
... ... ... ... ... ... ... ... ...
844 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku 2023-04
845 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku 2023-04
846 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku 2023-04
847 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku 2023-04
848 CHENGDU 2023-03-22 2023-04-06 15 18 22 laiku 2023-04

644 rows × 8 columns

In [1274]:
sns.barplot(x='year/month', y='actual_TT', data=Rail_CN)
Out[1274]:
<AxesSubplot:xlabel='year/month', ylabel='actual_TT'>
In [ ]:
#Atlikus analizę pagal atvykimo laiką matome kad pastaraisias mėnesiais tranzito laikas kiek svyravo,
#tačiau balandžio mėnesį tranzito laikas sumažėjo ir šiuo metu yra mažesnis, nei siūlomas klientams (18-22), todėl 
#būtų galima drąsiai mažinti tranzito laiką klientams iki 16-18d

Sea užsakymai - tranzito laikas¶

In [1367]:
Sea = offered_vs_actual[offered_vs_actual['Service'] == 'ML'].copy()
Sea.loc[:,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai']]
Out[1367]:
Service CountryFrom Uploading MAX actual_TT uzsakymai
0 ML CN XIAMEN 55 64 pavėlavo
1 ML CN TIANJIN 55 70 pavėlavo
2 ML CN YANTIAN 55 39 laiku
3 ML CN YANTIAN 55 39 laiku
4 ML CN YANTIAN 55 39 laiku
... ... ... ... ... ... ...
971 ML TH BANGKOK 65 76 pavėlavo
972 ML TH BANGKOK 65 58 laiku
973 ML PH MANILA 65 65 laiku
974 ML PH MANILA 65 71 pavėlavo
977 ML IL HAIFA 60 53 laiku

332 rows × 6 columns

In [1368]:
Sea['uzsakymai'].value_counts()
Out[1368]:
laiku       235
pavėlavo     97
Name: uzsakymai, dtype: int64
In [1369]:
Sea_uzsakymai=Sea['uzsakymai'].value_counts()
In [1370]:
Sea_uzsakymai.plot.pie(autopct='%1.1f%%', title = 'Sea užsakymų įvykdymas', colors= ['#9FE331', 'tomato'])
Out[1370]:
<AxesSubplot:title={'center':'Sea užsakymų įvykdymas'}, ylabel='uzsakymai'>
In [1279]:
Sea.groupby('Uploading')['uzsakymai'].count().sort_values().plot(title='Bendras Sea užsakymų paskirstymas per uostus', kind='barh',figsize=(5,5),color='royalblue')
Out[1279]:
<AxesSubplot:title={'center':'Bendras Sea užsakymų paskirstymas per uostus'}, ylabel='Uploading'>
In [1280]:
Sea.groupby('CountryFrom')['actual_TT'].mean().sort_values(ascending=False).plot(title='Faktinis tranzito laikas pagal uostus')
Out[1280]:
<AxesSubplot:title={'center':'Faktinis tranzito laikas pagal uostus'}, xlabel='CountryFrom'>

Analizuojame anksčiau atvykusius Sea krovinius¶

In [1371]:
def sea_anksciau(s):
    return s['MAX'] - s['actual_TT']
In [1372]:
Sea['dienu_skirtumas'] = Sea.apply(sea_anksciau, axis = 'columns')
Sea.loc[:200,['Service','CountryFrom','Uploading','MIN','MAX', 'actual_TT','uzsakymai','dienu_skirtumas']]
Out[1372]:
Service CountryFrom Uploading MIN MAX actual_TT uzsakymai dienu_skirtumas
0 ML CN XIAMEN 50 55 64 pavėlavo -9
1 ML CN TIANJIN 50 55 70 pavėlavo -15
2 ML CN YANTIAN 50 55 39 laiku 16
3 ML CN YANTIAN 50 55 39 laiku 16
4 ML CN YANTIAN 50 55 39 laiku 16
... ... ... ... ... ... ... ... ...
196 ML CN NINGBO 50 55 50 laiku 5
197 ML CN NINGBO 50 55 50 laiku 5
198 ML CN NINGBO 50 55 50 laiku 5
199 ML CN NINGBO 50 55 50 laiku 5
200 ML CN NINGBO 50 55 50 laiku 5

201 rows × 8 columns

In [1373]:
Sea.groupby('dienu_skirtumas')['Uploading'].count() 
#žiūrime kaip išsibarstę atvykimai anksčiau bei vėlavimai kad nustatyti periodus
Out[1373]:
dienu_skirtumas
-36     1
-32     2
-26     1
-20     2
-18     1
-15     5
-14    10
-13     7
-12     3
-11     4
-9      2
-8      4
-7      5
-6      5
-5      2
-4     19
-2     22
-1      2
 0      6
 1      4
 2      1
 3     31
 4      1
 5     20
 6     26
 7      3
 8     17
 9     22
 10     6
 11    21
 12    15
 13     5
 14     3
 15    21
 16    13
 17     8
 18     6
 19     1
 20     4
 23     1
Name: Uploading, dtype: int64
In [1374]:
def sea_atvykimas(s):
        if s['MAX'] - s['actual_TT'] >= 11:
            return("atvyko daugiau nei 11 dienomis anksčiau")
        elif 0 <= s['MAX'] - s['actual_TT'] < 11:
            return("atvyko laiku")
        else:    
            return("pavėlavo")
In [1375]:
Sea['sea_atvykimas'] = Sea.apply(sea_atvykimas, axis='columns')
Sea.loc[:20,['Service','CountryFrom','Uploading','MAX', 'actual_TT','sea_atvykimas']]
Out[1375]:
Service CountryFrom Uploading MAX actual_TT sea_atvykimas
0 ML CN XIAMEN 55 64 pavėlavo
1 ML CN TIANJIN 55 70 pavėlavo
2 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
3 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
4 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
5 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
6 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
7 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
8 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
9 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
10 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
11 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
12 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
13 ML CN YANTIAN 55 39 atvyko daugiau nei 11 dienomis anksčiau
14 ML CN NINGBO 55 49 atvyko laiku
15 ML CN YANTIAN 55 69 pavėlavo
16 ML CN YANTIAN 55 69 pavėlavo
17 ML CN YANTIAN 55 69 pavėlavo
18 ML CN YANTIAN 55 69 pavėlavo
19 ML CN YANTIAN 55 69 pavėlavo
20 ML CN YANTIAN 55 69 pavėlavo
In [1286]:
Sea['sea_atvykimas'].value_counts()
Out[1286]:
atvyko laiku                               137
atvyko daugiau nei 11 dienomis anksčiau     98
pavėlavo                                    97
Name: sea_atvykimas, dtype: int64
In [1287]:
Detalus_sea=Sea['sea_atvykimas'].value_counts()
In [1288]:
Detalus_sea.plot.pie(autopct='%1.1f%%', title = 'Detalesnė Sea užsakymų analizė', colors= ['#9FE331', 'tomato', 'plum', '#3CA4D8'])
Out[1288]:
<AxesSubplot:title={'center':'Detalesnė Sea užsakymų analizė'}, ylabel='sea_atvykimas'>
In [1376]:
Sea_a.groupby('Uploading')['uzsakymai'].count().sort_values().plot(title='Sea anksčiau atvykusių užsakymų paskirstymas per uostus', kind='barh',figsize=(5,5),color='royalblue')
Out[1376]:
<AxesSubplot:title={'center':'Sea anksčiau atvykusių užsakymų paskirstymas per uostus'}, ylabel='Uploading'>
In [1377]:
Sea_anksciau = Sea[Sea['dienu_skirtumas'] >=0].sort_values(by='dienu_skirtumas',ascending=False)
In [1378]:
Sea_a =Sea_anksciau.set_index(['Uploading', 'dienu_skirtumas','actual_TT'])
Sea_a.head(15)
Out[1378]:
Service CountryFrom Ordered ATD ATA MIN MAX uzsakymai sea_atvykimas
Uploading dienu_skirtumas actual_TT
KEELUNG 23 42 ML TW 2023-01-04 2023-01-26 2023-03-09 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
YANTIAN 20 35 ML CN 2022-12-19 2023-02-03 2023-03-10 50 55 laiku atvyko daugiau nei 11 dienomis anksčiau
KAOHSIUNG 20 45 ML TW 2022-12-08 2022-12-30 2023-02-13 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
45 ML TW 2022-12-07 2022-12-30 2023-02-13 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
45 ML TW 2022-12-06 2022-12-30 2023-02-13 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
19 46 ML TW 2022-10-11 2022-10-31 2022-12-16 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
18 47 ML TW 2022-12-12 2023-01-11 2023-02-27 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
NEW YORK 18 32 ML US 2022-10-07 2022-10-30 2022-12-01 40 50 laiku atvyko daugiau nei 11 dienomis anksčiau
NHAVA SHEVA 18 42 ML IN 2022-11-22 2022-12-12 2023-01-23 50 60 laiku atvyko daugiau nei 11 dienomis anksčiau
KAOHSIUNG 18 47 ML TW 2022-12-22 2023-01-11 2023-02-27 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
47 ML TW 2022-12-14 2023-01-11 2023-02-27 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
47 ML TW 2022-12-07 2023-01-11 2023-02-27 55 65 laiku atvyko daugiau nei 11 dienomis anksčiau
YANTIAN 17 38 ML CN 2022-09-28 2022-11-29 2023-01-06 50 55 laiku atvyko daugiau nei 11 dienomis anksčiau
38 ML CN 2022-11-04 2022-11-29 2023-01-06 50 55 laiku atvyko daugiau nei 11 dienomis anksčiau
NHAVA SHEVA 17 43 ML IN 2022-12-01 2022-12-11 2023-01-23 50 60 laiku atvyko daugiau nei 11 dienomis anksčiau

Išsamesnė vėluojančių Sea krovinių analizė¶

In [1379]:
def sea_vėlavimas(s):
        if s['dienu_skirtumas'] <= -21:
            return("virš 3 savaičių vėlavimas")
        elif -21 < s['dienu_skirtumas'] <= -14:
            return("vėlavimas nuo 2 iki 3 savaičių")
        elif -14 < s['dienu_skirtumas'] <= -7:
            return("vėlavimas nuo 1 iki 2 savaičių")
        elif -7 < s['dienu_skirtumas'] <= -1:
            return("vėlavimas iki 1 savaitės")
        else:
            return("laiku")
In [1380]:
Sea['sea_vėlavimas'] = Sea.apply(sea_vėlavimas, axis='columns')
Sea.loc[:300,['Service','CountryFrom','Uploading','MAX', 'MIN','actual_TT','dienu_skirtumas', 'sea_vėlavimas']]
Out[1380]:
Service CountryFrom Uploading MAX MIN actual_TT dienu_skirtumas sea_vėlavimas
0 ML CN XIAMEN 55 50 64 -9 vėlavimas nuo 1 iki 2 savaičių
1 ML CN TIANJIN 55 50 70 -15 vėlavimas nuo 2 iki 3 savaičių
2 ML CN YANTIAN 55 50 39 16 laiku
3 ML CN YANTIAN 55 50 39 16 laiku
4 ML CN YANTIAN 55 50 39 16 laiku
... ... ... ... ... ... ... ... ...
200 ML CN NINGBO 55 50 50 5 laiku
201 ML CN QINGDAO 55 50 68 -13 vėlavimas nuo 1 iki 2 savaičių
202 ML JP Osaka 65 55 101 -36 virš 3 savaičių vėlavimas
203 ML JP KOBE 65 55 80 -15 vėlavimas nuo 2 iki 3 savaičių
204 ML JP KOBE 65 55 91 -26 virš 3 savaičių vėlavimas

205 rows × 8 columns

In [1297]:
Sea_vėlavimas = Sea['sea_vėlavimas'].value_counts()
In [1298]:
Sea['sea_vėlavimas'].value_counts()
Out[1298]:
laiku                             235
vėlavimas iki 1 savaitės           50
vėlavimas nuo 1 iki 2 savaičių     25
vėlavimas nuo 2 iki 3 savaičių     18
virš 3 savaičių vėlavimas           4
Name: sea_vėlavimas, dtype: int64
In [1325]:
Sea_vėlavimas.plot.pie(autopct='%1.1f%%', title = 'Sea vėlavimų užsakymų analizė', colors= ['#9FE331', 'gold', 'plum', '#3CA4D8', 'tomato'])
Out[1325]:
<AxesSubplot:title={'center':'Sea vėlavimų užsakymų analizė'}, ylabel='sea_vėlavimas'>
In [1300]:
Sea_d.groupby('Uploading')['uzsakymai'].count().sort_values().plot(title='Sea vėluojančių užsakymų paskirstymas per uostus', kind='barh',figsize=(5,5),color='royalblue')
Out[1300]:
<AxesSubplot:title={'center':'Sea vėluojančių užsakymų paskirstymas per uostus'}, ylabel='Uploading'>

Pasižiūrime į TOP-15 vėluojančių uostų¶

In [1301]:
Sea_delay = Sea[Sea['dienu_skirtumas'] <0].sort_values(by='dienu_skirtumas',ascending=True)
In [1302]:
Sea_d =Sea_delay.set_index(['Uploading', 'dienu_skirtumas', 'sea_vėlavimas'])
Sea_d.head(15)
Out[1302]:
Service CountryFrom Ordered ATD ATA actual_TT MIN MAX uzsakymai sea_atvykimas
Uploading dienu_skirtumas sea_vėlavimas
Osaka -36 virš 3 savaičių vėlavimas ML JP 2022-06-22 2022-07-08 2022-10-17 101 55 65 pavėlavo pavėlavo
NEW YORK -32 virš 3 savaičių vėlavimas ML US 2022-07-07 2022-08-19 2022-11-09 82 40 50 pavėlavo pavėlavo
virš 3 savaičių vėlavimas ML CA 2022-07-25 2022-08-19 2022-11-09 82 40 50 pavėlavo pavėlavo
KOBE -26 virš 3 savaičių vėlavimas ML JP 2022-10-06 2022-10-20 2023-01-19 91 55 65 pavėlavo pavėlavo
HONG KONG -20 vėlavimas nuo 2 iki 3 savaičių ML HK 2022-07-20 2022-08-01 2022-10-25 85 55 65 pavėlavo pavėlavo
QINGDAO -20 vėlavimas nuo 2 iki 3 savaičių ML CN 2022-11-09 2022-12-04 2023-02-17 75 50 55 pavėlavo pavėlavo
XINGANG -18 vėlavimas nuo 2 iki 3 savaičių ML CN 2022-11-23 2022-12-12 2023-02-23 73 50 55 pavėlavo pavėlavo
HONG KONG -15 vėlavimas nuo 2 iki 3 savaičių ML HK 2022-06-30 2022-08-16 2022-11-04 80 55 65 pavėlavo pavėlavo
TIANJIN -15 vėlavimas nuo 2 iki 3 savaičių ML CN 2022-07-19 2022-08-08 2022-10-17 70 50 55 pavėlavo pavėlavo
HONG KONG -15 vėlavimas nuo 2 iki 3 savaičių ML HK 2022-08-08 2022-08-16 2022-11-04 80 55 65 pavėlavo pavėlavo
KOBE -15 vėlavimas nuo 2 iki 3 savaičių ML JP 2022-09-02 2022-09-17 2022-12-06 80 55 65 pavėlavo pavėlavo
BUSAN -15 vėlavimas nuo 2 iki 3 savaičių ML KR 2022-12-16 2023-01-07 2023-03-28 80 55 65 pavėlavo pavėlavo
NEW YORK -14 vėlavimas nuo 2 iki 3 savaičių ML US 2022-08-25 2022-09-28 2022-12-01 64 40 50 pavėlavo pavėlavo
YANTIAN -14 vėlavimas nuo 2 iki 3 savaičių ML CN 2022-07-19 2022-08-23 2022-10-31 69 50 55 pavėlavo pavėlavo
vėlavimas nuo 2 iki 3 savaičių ML CN 2022-08-01 2022-08-23 2022-10-31 69 50 55 pavėlavo pavėlavo

Analizuojame bendrą krovinių kiekį iš visų uostų bei duotą tranzito laiką klientms¶

In [1381]:
Sea.groupby(['CountryFrom', 'Uploading']).agg({'CountryFrom':'count','actual_TT':'mean', 'MAX':'max'})
Out[1381]:
CountryFrom actual_TT MAX
CountryFrom Uploading
CA NEW YORK 2 63.500000 50
CN BEIJING 1 67.000000 55
NANSHA 22 56.454545 55
NINGBO 75 51.146667 55
QINGDAO 3 68.000000 55
SHANGHAI 4 60.000000 55
TIANJIN 3 68.000000 55
XIAMEN 5 57.000000 55
XINGANG 1 73.000000 55
YANTIAN 88 47.659091 55
HK HONG KONG 34 59.205882 65
IL HAIFA 1 53.000000 60
IN NHAVA SHEVA 10 49.200000 60
JP KOBE 2 85.500000 65
Osaka 1 101.000000 65
KR BUSAN 6 71.333333 65
MY PENANG 1 60.000000 65
PH MANILA 2 68.000000 65
TH BANGKOK 2 67.000000 65
TW KAOHSIUNG 36 53.305556 65
KEELUNG 6 52.000000 65
US LOS ANGELES 1 44.000000 50
NEW YORK 14 52.142857 50
VN HO CHI MINH 12 68.416667 65
In [1382]:
sea_min = Sea['actual_TT'].min(axis=0)
sea_min
Out[1382]:
32
In [1383]:
Sea_China = Sea[Sea['CountryFrom'] == 'CN'].copy()
Sea_China.sort_values(by='ATA',ascending = False)
Out[1383]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
201 ML CN QINGDAO 2023-01-02 2023-01-27 2023-04-05 68 50 55 pavėlavo -13 pavėlavo vėlavimas nuo 1 iki 2 savaičių
192 ML CN NINGBO 2023-01-02 2023-01-30 2023-03-21 50 50 55 laiku 5 atvyko laiku laiku
184 ML CN NINGBO 2022-12-15 2023-01-30 2023-03-21 50 50 55 laiku 5 atvyko laiku laiku
185 ML CN NINGBO 2022-12-15 2023-01-30 2023-03-21 50 50 55 laiku 5 atvyko laiku laiku
186 ML CN NINGBO 2022-12-19 2023-01-30 2023-03-21 50 50 55 laiku 5 atvyko laiku laiku
... ... ... ... ... ... ... ... ... ... ... ... ... ...
9 ML CN YANTIAN 2022-08-16 2022-09-15 2022-10-24 39 50 55 laiku 16 atvyko daugiau nei 11 dienomis anksčiau laiku
10 ML CN YANTIAN 2022-08-17 2022-09-15 2022-10-24 39 50 55 laiku 16 atvyko daugiau nei 11 dienomis anksčiau laiku
12 ML CN YANTIAN 2022-08-22 2022-09-15 2022-10-24 39 50 55 laiku 16 atvyko daugiau nei 11 dienomis anksčiau laiku
13 ML CN YANTIAN 2022-08-24 2022-09-15 2022-10-24 39 50 55 laiku 16 atvyko daugiau nei 11 dienomis anksčiau laiku
1 ML CN TIANJIN 2022-07-19 2022-08-08 2022-10-17 70 50 55 pavėlavo -15 pavėlavo vėlavimas nuo 2 iki 3 savaičių

202 rows × 13 columns

In [1384]:
Sea_China['actual_TT'].mean()
#turime daug CN uostų, matome kad TT vidurkis atitinka pagal pasiūlymą, tačiau būtų galima išskirti pagrindinius tranzito
# uostus nuo outportų ir iškirstyti tranzito laiką - pvz QINGDAO,TIANJIN,XINGANG, BEIJING galima būtų ilginti TT iki 
# 60-70d, NANSHA uostą- kolkas stebėti, o NINGBO bei YANTIAN uostus būtų galima trumptinti iki 45-50d
Out[1384]:
51.21287128712871
In [1385]:
Sea[Sea['Uploading'] == 'NANSHA'].sort_values(by='ATA',ascending = False) 
Out[1385]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
183 ML CN NANSHA 2023-01-06 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
182 ML CN NANSHA 2023-01-05 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
181 ML CN NANSHA 2023-01-05 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
180 ML CN NANSHA 2023-01-04 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
179 ML CN NANSHA 2023-01-04 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
178 ML CN NANSHA 2023-01-04 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
177 ML CN NANSHA 2022-12-30 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
176 ML CN NANSHA 2022-12-19 2023-01-20 2023-03-13 52 50 55 laiku 3 atvyko laiku laiku
149 ML CN NANSHA 2022-11-18 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
161 ML CN NANSHA 2022-12-14 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
160 ML CN NANSHA 2022-12-14 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
148 ML CN NANSHA 2022-11-16 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
158 ML CN NANSHA 2022-12-07 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
157 ML CN NANSHA 2022-12-07 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
156 ML CN NANSHA 2022-12-06 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
155 ML CN NANSHA 2022-12-05 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
154 ML CN NANSHA 2022-12-05 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
153 ML CN NANSHA 2022-12-02 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
152 ML CN NANSHA 2022-12-01 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
151 ML CN NANSHA 2022-11-29 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
150 ML CN NANSHA 2022-11-24 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
159 ML CN NANSHA 2022-12-08 2023-01-01 2023-03-01 59 50 55 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
In [1386]:
Sea[Sea['CountryFrom'] == 'JP'].sort_values(by='ATA',ascending = False)  # visi vėlavo- rekomenduoju keisti TT į ~80-85d
Out[1386]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
204 ML JP KOBE 2022-10-06 2022-10-20 2023-01-19 91 55 65 pavėlavo -26 pavėlavo virš 3 savaičių vėlavimas
203 ML JP KOBE 2022-09-02 2022-09-17 2022-12-06 80 55 65 pavėlavo -15 pavėlavo vėlavimas nuo 2 iki 3 savaičių
202 ML JP Osaka 2022-06-22 2022-07-08 2022-10-17 101 55 65 pavėlavo -36 pavėlavo virš 3 savaičių vėlavimas
In [1387]:
Sea[Sea['CountryFrom'] == 'KR'].sort_values(by='ATA',ascending = False)  # visi vėlavo- rekomenduoju keisti TT į 70-75d
Out[1387]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
970 ML KR BUSAN 2022-12-16 2023-01-07 2023-03-28 80 55 65 pavėlavo -15 pavėlavo vėlavimas nuo 2 iki 3 savaičių
969 ML KR BUSAN 2022-12-07 2022-12-18 2023-02-23 67 55 65 pavėlavo -2 pavėlavo vėlavimas iki 1 savaitės
968 ML KR BUSAN 2022-11-30 2022-12-18 2023-02-22 66 55 65 pavėlavo -1 pavėlavo vėlavimas iki 1 savaitės
967 ML KR BUSAN 2022-10-18 2022-11-12 2023-01-23 72 55 65 pavėlavo -7 pavėlavo vėlavimas nuo 1 iki 2 savaičių
966 ML KR BUSAN 2022-10-12 2022-11-02 2023-01-11 70 55 65 pavėlavo -5 pavėlavo vėlavimas iki 1 savaitės
965 ML KR BUSAN 2022-09-21 2022-10-11 2022-12-23 73 55 65 pavėlavo -8 pavėlavo vėlavimas nuo 1 iki 2 savaičių
In [1388]:
Sea[Sea['CountryFrom'] == 'VN'].sort_values(by='ATA',ascending = False) # didžioji dalis krovinių vėlavo, tame tarpe
# ir paskutiniai atvykimai, todėl rekomenduoju ilginti TT iki 65-70d
Out[1388]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
951 ML VN HO CHI MINH 2023-01-16 2023-01-24 2023-04-05 71 55 65 pavėlavo -6 pavėlavo vėlavimas iki 1 savaitės
949 ML VN HO CHI MINH 2023-01-02 2023-01-09 2023-03-28 78 55 65 pavėlavo -13 pavėlavo vėlavimas nuo 1 iki 2 savaičių
950 ML VN HO CHI MINH 2023-01-03 2023-01-18 2023-03-28 69 55 65 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
947 ML VN HO CHI MINH 2022-11-21 2022-12-21 2023-03-07 76 55 65 pavėlavo -11 pavėlavo vėlavimas nuo 1 iki 2 savaičių
948 ML VN HO CHI MINH 2022-12-16 2022-12-27 2023-03-07 70 55 65 pavėlavo -5 pavėlavo vėlavimas iki 1 savaitės
946 ML VN HO CHI MINH 2022-11-21 2022-11-30 2023-02-02 64 55 65 laiku 1 atvyko laiku laiku
945 ML VN HO CHI MINH 2022-11-03 2022-11-15 2023-01-11 57 55 65 laiku 8 atvyko laiku laiku
944 ML VN HO CHI MINH 2022-10-12 2022-10-17 2022-12-29 73 55 65 pavėlavo -8 pavėlavo vėlavimas nuo 1 iki 2 savaičių
942 ML VN HO CHI MINH 2022-09-05 2022-09-19 2022-11-25 67 55 65 pavėlavo -2 pavėlavo vėlavimas iki 1 savaitės
943 ML VN HO CHI MINH 2022-09-12 2022-09-19 2022-11-25 67 55 65 pavėlavo -2 pavėlavo vėlavimas iki 1 savaitės
940 ML VN HO CHI MINH 2022-08-04 2022-08-26 2022-10-31 66 55 65 pavėlavo -1 pavėlavo vėlavimas iki 1 savaitės
941 ML VN HO CHI MINH 2022-08-22 2022-08-29 2022-10-31 63 55 65 laiku 2 atvyko laiku laiku
In [1389]:
Sea[Sea['CountryFrom'] == 'US'].sort_values(by='ATA',ascending = False) 
# matome kad didesnė dalis krovinių vėluoja atvykti, surūšiavus pagal atvykimo datą matome kad paskutiniai kroviniai
# arba vėlavo keliomis dienomis, arba atvyko anksčiau, vidutinis TT laikas buvo viršytas tik 2 dienomis, todėl    
# rekomenduoju toliau stebėti TT
Out[1389]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
863 ML US NEW YORK 2022-12-27 2023-02-10 2023-04-05 54 40 50 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
862 ML US NEW YORK 2022-11-30 2023-01-12 2023-03-07 54 40 50 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
861 ML US NEW YORK 2022-11-18 2022-12-30 2023-02-17 49 40 50 laiku 1 atvyko laiku laiku
860 ML US NEW YORK 2022-11-04 2022-11-27 2023-01-04 38 40 50 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
858 ML US NEW YORK 2022-09-15 2022-10-13 2022-12-06 54 40 50 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
859 ML US NEW YORK 2022-09-21 2022-10-13 2022-12-06 54 40 50 pavėlavo -4 pavėlavo vėlavimas iki 1 savaitės
856 ML US NEW YORK 2022-08-25 2022-09-28 2022-12-01 64 40 50 pavėlavo -14 pavėlavo vėlavimas nuo 2 iki 3 savaičių
857 ML US NEW YORK 2022-10-07 2022-10-30 2022-12-01 32 40 50 laiku 18 atvyko daugiau nei 11 dienomis anksčiau laiku
853 ML US NEW YORK 2022-07-07 2022-08-19 2022-11-09 82 40 50 pavėlavo -32 pavėlavo virš 3 savaičių vėlavimas
854 ML US NEW YORK 2022-07-13 2022-09-09 2022-11-09 61 40 50 pavėlavo -11 pavėlavo vėlavimas nuo 1 iki 2 savaičių
855 ML US NEW YORK 2022-08-23 2022-09-09 2022-11-09 61 40 50 pavėlavo -11 pavėlavo vėlavimas nuo 1 iki 2 savaičių
851 ML US LOS ANGELES 2022-08-12 2022-09-20 2022-11-03 44 40 50 laiku 6 atvyko laiku laiku
852 ML US NEW YORK 2022-09-02 2022-09-21 2022-11-03 43 40 50 laiku 7 atvyko laiku laiku
849 ML US NEW YORK 2022-07-27 2022-09-09 2022-10-21 42 40 50 laiku 8 atvyko laiku laiku
850 ML US NEW YORK 2022-08-17 2022-09-09 2022-10-21 42 40 50 laiku 8 atvyko laiku laiku
In [1390]:
Sea[Sea['CountryFrom'] == 'IN'].sort_values(by='ATA',ascending = False) 
#matome kad vėlavo tik vienas krovinys, kuris atvyko seniausiai,visi likę kroviniai atvyko anksčiau, todėl
# rekomenduoju mažinti TT klientams iki 45-50d
Out[1390]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
962 ML IN NHAVA SHEVA 2023-01-23 2023-02-14 2023-04-05 50 50 60 laiku 10 atvyko laiku laiku
963 ML IN NHAVA SHEVA 2023-01-25 2023-02-14 2023-04-05 50 50 60 laiku 10 atvyko laiku laiku
961 ML IN NHAVA SHEVA 2022-12-27 2023-01-22 2023-03-07 44 50 60 laiku 16 atvyko daugiau nei 11 dienomis anksčiau laiku
958 ML IN NHAVA SHEVA 2022-11-11 2022-12-02 2023-01-23 52 50 60 laiku 8 atvyko laiku laiku
959 ML IN NHAVA SHEVA 2022-11-22 2022-12-12 2023-01-23 42 50 60 laiku 18 atvyko daugiau nei 11 dienomis anksčiau laiku
960 ML IN NHAVA SHEVA 2022-12-01 2022-12-11 2023-01-23 43 50 60 laiku 17 atvyko daugiau nei 11 dienomis anksčiau laiku
957 ML IN NHAVA SHEVA 2022-09-26 2022-10-30 2022-12-16 47 50 60 laiku 13 atvyko daugiau nei 11 dienomis anksčiau laiku
956 ML IN NHAVA SHEVA 2022-09-16 2022-10-09 2022-11-25 47 50 60 laiku 13 atvyko daugiau nei 11 dienomis anksčiau laiku
955 ML IN NHAVA SHEVA 2022-08-26 2022-09-26 2022-11-15 50 50 60 laiku 10 atvyko laiku laiku
954 ML IN NHAVA SHEVA 2022-08-04 2022-09-04 2022-11-10 67 50 60 pavėlavo -7 pavėlavo vėlavimas nuo 1 iki 2 savaičių
In [1391]:
Sea[Sea['CountryFrom'] == 'TW'].sort_values(by='ATA',ascending = False)
#visi kroviniai atvyko anksčiau laiko, rekomenduoju mažinti tranzitinį laiką- 50-55d
Out[1391]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
939 ML TW KAOHSIUNG 2023-01-18 2023-02-10 2023-04-05 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
938 ML TW KAOHSIUNG 2023-01-17 2023-02-10 2023-04-05 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
937 ML TW KAOHSIUNG 2023-01-17 2023-02-10 2023-04-05 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
936 ML TW KAOHSIUNG 2023-01-16 2023-02-10 2023-04-05 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
935 ML TW KAOHSIUNG 2023-01-13 2023-02-10 2023-04-05 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
934 ML TW KEELUNG 2023-01-10 2023-02-01 2023-03-21 48 55 65 laiku 17 atvyko daugiau nei 11 dienomis anksčiau laiku
932 ML TW KAOHSIUNG 2022-12-29 2023-01-14 2023-03-09 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
931 ML TW KAOHSIUNG 2022-12-23 2023-01-14 2023-03-09 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
930 ML TW KAOHSIUNG 2022-12-21 2023-01-14 2023-03-09 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
933 ML TW KEELUNG 2023-01-04 2023-01-26 2023-03-09 42 55 65 laiku 23 atvyko daugiau nei 11 dienomis anksčiau laiku
929 ML TW KEELUNG 2022-12-13 2023-01-04 2023-03-07 62 55 65 laiku 3 atvyko laiku laiku
928 ML TW KAOHSIUNG 2022-12-22 2023-01-11 2023-02-27 47 55 65 laiku 18 atvyko daugiau nei 11 dienomis anksčiau laiku
927 ML TW KAOHSIUNG 2022-12-14 2023-01-11 2023-02-27 47 55 65 laiku 18 atvyko daugiau nei 11 dienomis anksčiau laiku
926 ML TW KAOHSIUNG 2022-12-12 2023-01-11 2023-02-27 47 55 65 laiku 18 atvyko daugiau nei 11 dienomis anksčiau laiku
925 ML TW KAOHSIUNG 2022-12-07 2023-01-11 2023-02-27 47 55 65 laiku 18 atvyko daugiau nei 11 dienomis anksčiau laiku
924 ML TW KAOHSIUNG 2022-12-08 2022-12-30 2023-02-13 45 55 65 laiku 20 atvyko daugiau nei 11 dienomis anksčiau laiku
923 ML TW KAOHSIUNG 2022-12-07 2022-12-30 2023-02-13 45 55 65 laiku 20 atvyko daugiau nei 11 dienomis anksčiau laiku
922 ML TW KAOHSIUNG 2022-12-06 2022-12-30 2023-02-13 45 55 65 laiku 20 atvyko daugiau nei 11 dienomis anksčiau laiku
921 ML TW KEELUNG 2022-11-23 2022-12-22 2023-02-10 50 55 65 laiku 15 atvyko daugiau nei 11 dienomis anksčiau laiku
920 ML TW KAOHSIUNG 2022-11-10 2022-11-28 2023-01-19 52 55 65 laiku 13 atvyko daugiau nei 11 dienomis anksčiau laiku
919 ML TW KAOHSIUNG 2022-11-09 2022-11-28 2023-01-19 52 55 65 laiku 13 atvyko daugiau nei 11 dienomis anksčiau laiku
918 ML TW KAOHSIUNG 2022-11-08 2022-11-28 2023-01-19 52 55 65 laiku 13 atvyko daugiau nei 11 dienomis anksčiau laiku
917 ML TW KAOHSIUNG 2022-11-03 2022-11-19 2023-01-11 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
916 ML TW KAOHSIUNG 2022-11-03 2022-11-19 2023-01-11 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
915 ML TW KAOHSIUNG 2022-10-27 2022-11-14 2023-01-04 51 55 65 laiku 14 atvyko daugiau nei 11 dienomis anksčiau laiku
914 ML TW KEELUNG 2022-10-24 2022-11-08 2023-01-04 57 55 65 laiku 8 atvyko laiku laiku
913 ML TW KAOHSIUNG 2022-10-21 2022-11-14 2023-01-04 51 55 65 laiku 14 atvyko daugiau nei 11 dienomis anksčiau laiku
910 ML TW KAOHSIUNG 2022-09-28 2022-10-24 2022-12-16 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
912 ML TW KAOHSIUNG 2022-10-11 2022-10-31 2022-12-16 46 55 65 laiku 19 atvyko daugiau nei 11 dienomis anksčiau laiku
911 ML TW KAOHSIUNG 2022-10-10 2022-10-24 2022-12-16 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
909 ML TW KAOHSIUNG 2022-08-23 2022-10-08 2022-12-01 54 55 65 laiku 11 atvyko daugiau nei 11 dienomis anksčiau laiku
908 ML TW KAOHSIUNG 2022-09-06 2022-09-27 2022-11-25 59 55 65 laiku 6 atvyko laiku laiku
907 ML TW KAOHSIUNG 2022-09-05 2022-09-27 2022-11-25 59 55 65 laiku 6 atvyko laiku laiku
906 ML TW KEELUNG 2022-08-25 2022-09-24 2022-11-16 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
905 ML TW KAOHSIUNG 2022-08-22 2022-09-05 2022-11-03 59 55 65 laiku 6 atvyko laiku laiku
904 ML TW KAOHSIUNG 2022-08-18 2022-09-05 2022-11-03 59 55 65 laiku 6 atvyko laiku laiku
903 ML TW KAOHSIUNG 2022-08-12 2022-09-05 2022-11-03 59 55 65 laiku 6 atvyko laiku laiku
902 ML TW KAOHSIUNG 2022-08-11 2022-09-05 2022-11-03 59 55 65 laiku 6 atvyko laiku laiku
900 ML TW KAOHSIUNG 2022-08-19 2022-09-05 2022-10-31 56 55 65 laiku 9 atvyko laiku laiku
901 ML TW KAOHSIUNG 2022-08-19 2022-09-05 2022-10-31 56 55 65 laiku 9 atvyko laiku laiku
899 ML TW KAOHSIUNG 2022-08-04 2022-08-22 2022-10-25 64 55 65 laiku 1 atvyko laiku laiku
898 ML TW KAOHSIUNG 2022-08-01 2022-08-22 2022-10-25 64 55 65 laiku 1 atvyko laiku laiku
In [1392]:
Sea[Sea['Uploading'] == 'HONG KONG'].sort_values(by='ATA',ascending = False) 
#matome didžioji dalis krovinių atvyko ankčiau, tame tarpe ir šviežiausi todėl rekomenduoju mažinti TT klientams  iki 55-60d
Out[1392]:
Service CountryFrom Uploading Ordered ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas sea_atvykimas sea_vėlavimas
897 ML HK HONG KONG 2023-02-01 2023-02-14 2023-04-05 50 55 65 laiku 15 atvyko daugiau nei 11 dienomis anksčiau laiku
896 ML HK HONG KONG 2023-01-18 2023-02-14 2023-04-05 50 55 65 laiku 15 atvyko daugiau nei 11 dienomis anksčiau laiku
895 ML HK HONG KONG 2023-01-17 2023-02-14 2023-04-05 50 55 65 laiku 15 atvyko daugiau nei 11 dienomis anksčiau laiku
894 ML HK HONG KONG 2023-01-12 2023-01-30 2023-03-30 59 55 65 laiku 6 atvyko laiku laiku
893 ML HK HONG KONG 2023-01-11 2023-01-30 2023-03-30 59 55 65 laiku 6 atvyko laiku laiku
892 ML HK HONG KONG 2023-01-10 2023-01-30 2023-03-30 59 55 65 laiku 6 atvyko laiku laiku
891 ML HK HONG KONG 2023-01-05 2023-01-30 2023-03-30 59 55 65 laiku 6 atvyko laiku laiku
890 ML HK HONG KONG 2022-12-12 2023-01-09 2023-03-07 57 55 65 laiku 8 atvyko laiku laiku
889 ML HK HONG KONG 2022-12-12 2023-01-09 2023-03-07 57 55 65 laiku 8 atvyko laiku laiku
888 ML HK HONG KONG 2022-12-05 2023-01-09 2023-03-07 57 55 65 laiku 8 atvyko laiku laiku
887 ML HK HONG KONG 2022-11-28 2022-12-13 2023-02-10 59 55 65 laiku 6 atvyko laiku laiku
886 ML HK HONG KONG 2022-11-25 2022-12-13 2023-02-10 59 55 65 laiku 6 atvyko laiku laiku
885 ML HK HONG KONG 2022-11-24 2022-12-13 2023-02-10 59 55 65 laiku 6 atvyko laiku laiku
882 ML HK HONG KONG 2022-11-07 2022-11-27 2023-01-19 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
884 ML HK HONG KONG 2022-11-16 2022-11-27 2023-01-19 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
883 ML HK HONG KONG 2022-11-15 2022-11-27 2023-01-19 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
881 ML HK HONG KONG 2022-10-17 2022-11-12 2023-01-04 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
879 ML HK HONG KONG 2022-10-06 2022-10-25 2022-12-29 65 55 65 laiku 0 atvyko laiku laiku
880 ML HK HONG KONG 2022-10-18 2022-10-31 2022-12-29 59 55 65 laiku 6 atvyko laiku laiku
878 ML HK HONG KONG 2022-09-19 2022-10-03 2022-11-25 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
877 ML HK HONG KONG 2022-09-16 2022-10-03 2022-11-25 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
876 ML HK HONG KONG 2022-09-13 2022-10-03 2022-11-25 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
875 ML HK HONG KONG 2022-09-13 2022-10-03 2022-11-25 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
874 ML HK HONG KONG 2022-09-09 2022-10-03 2022-11-25 53 55 65 laiku 12 atvyko daugiau nei 11 dienomis anksčiau laiku
873 ML HK HONG KONG 2022-09-07 2022-10-03 2022-11-23 51 55 65 laiku 14 atvyko daugiau nei 11 dienomis anksčiau laiku
872 ML HK HONG KONG 2022-12-27 2022-09-18 2022-11-18 61 55 65 laiku 4 atvyko laiku laiku
871 ML HK HONG KONG 2022-09-05 2022-09-18 2022-11-16 59 55 65 laiku 6 atvyko laiku laiku
870 ML HK HONG KONG 2022-08-30 2022-09-18 2022-11-16 59 55 65 laiku 6 atvyko laiku laiku
869 ML HK HONG KONG 2022-08-24 2022-09-18 2022-11-16 59 55 65 laiku 6 atvyko laiku laiku
868 ML HK HONG KONG 2022-08-16 2022-08-28 2022-11-08 72 55 65 pavėlavo -7 pavėlavo vėlavimas nuo 1 iki 2 savaičių
867 ML HK HONG KONG 2022-08-04 2022-08-28 2022-11-08 72 55 65 pavėlavo -7 pavėlavo vėlavimas nuo 1 iki 2 savaičių
866 ML HK HONG KONG 2022-08-08 2022-08-16 2022-11-04 80 55 65 pavėlavo -15 pavėlavo vėlavimas nuo 2 iki 3 savaičių
865 ML HK HONG KONG 2022-06-30 2022-08-16 2022-11-04 80 55 65 pavėlavo -15 pavėlavo vėlavimas nuo 2 iki 3 savaičių
864 ML HK HONG KONG 2022-07-20 2022-08-01 2022-10-25 85 55 65 pavėlavo -20 pavėlavo vėlavimas nuo 2 iki 3 savaičių

Analizuojame uostus su dižiausiu kroviniu kiekiu: Yantian ir Ningbo¶

In [1100]:
Yantian = Sea[Sea['Uploading'] == 'YANTIAN'].copy()
Yantian=Yantian.drop(['Service', 'CountryFrom', 'Ordered','sea_atvykimas', 'sea_vėlavimas'], axis = 1)
Yantian
Out[1100]:
Uploading ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas
2 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16
3 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16
4 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16
5 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16
6 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16
... ... ... ... ... ... ... ... ...
175 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3
176 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3
177 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3
178 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3
179 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3

84 rows × 8 columns

In [1074]:
Yantian['year/month'] = pd.to_datetime(Yantian['ATA']).dt.to_period('M')
Yantian
Out[1074]:
Uploading ATD ATA actual_TT MIN MAX uzsakymai dienu_skirtumas year/month
2 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16 2022-10
3 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16 2022-10
4 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16 2022-10
5 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16 2022-10
6 YANTIAN 2022-09-15 2022-10-24 39 50 55 laiku 16 2022-10
... ... ... ... ... ... ... ... ... ...
175 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3 2023-03
176 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3 2023-03
177 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3 2023-03
178 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3 2023-03
179 YANTIAN 2023-01-17 2023-03-10 52 50 55 laiku 3 2023-03

84 rows × 9 columns

In [416]:
sns.barplot(x='year/month', y='actual_TT', hue ='uzsakymai', data=Yantian)
sns.barplot(x='year/month', y='actual_TT', data=Yantian)
Out[416]:
<AxesSubplot:xlabel='year/month', ylabel='actual_TT'>
In [ ]:
#Atlikus detalesnę analizę Yantian uostui matome kad pastaraisias mėnesiais tranzito laikas nebesvyruoja taip, kaip svyravo seniau, 
#matome kad šiuo metu siūlomas tranzito laikas sumažėjo ir jį būtų galima mažinti iki 45-50d.
In [1395]:
sns.barplot(x='metai/menuo', y='actual_TT', hue ='uzsakymai', data=Ningbo)
sns.barplot(x='metai/menuo', y='actual_TT', data=Ningbo)
Out[1395]:
<AxesSubplot:xlabel='metai/menuo', ylabel='actual_TT'>
In [ ]:
#Atlikus detalesnę analizę Ningno uostui matome kad pastaraisias mėnesiais tranzito laikas nebesvyruoja taip,
# kaip svyravo seniau,#matome kad šiuo metu siūlomas tranzito laikas sumažėjo ir jį būtų galima mažinti iki 45-50d.

Tiesinės regresijos taikymas duomenims¶

In [1323]:
Ningbo = Sea[Sea['Uploading'] == 'NINGBO'].copy()
Ningbo=Ningbo.drop(['Service', 'CountryFrom', 'Ordered','sea_atvykimas', 'sea_vėlavimas', 'dienu_skirtumas'], axis = 1)
In [1324]:
Ningbo['menuo'] = pd.DatetimeIndex(Ningbo['ATA']).month
Ningbo['metai/menuo']=pd.to_datetime(Ningbo['ATA']).dt.to_period('M').astype(str)
Ningbo.head(10)
Out[1324]:
Uploading ATD ATA actual_TT MIN MAX uzsakymai menuo metai/menuo
14 NINGBO 2022-09-12 2022-10-31 49 50 55 laiku 10 2022-10
24 NINGBO 2022-09-12 2022-10-31 49 50 55 laiku 10 2022-10
25 NINGBO 2022-09-12 2022-10-31 49 50 55 laiku 10 2022-10
26 NINGBO 2022-09-12 2022-10-31 49 50 55 laiku 10 2022-10
27 NINGBO 2022-09-12 2022-10-31 49 50 55 laiku 10 2022-10
28 NINGBO 2022-09-12 2022-10-31 49 50 55 laiku 10 2022-10
29 NINGBO 2022-09-12 2022-10-31 49 50 55 laiku 10 2022-10
55 NINGBO 2022-10-29 2022-12-08 40 50 55 laiku 12 2022-12
56 NINGBO 2022-10-29 2022-12-08 40 50 55 laiku 12 2022-12
57 NINGBO 2022-10-29 2022-12-08 40 50 55 laiku 12 2022-12
In [1170]:
NIN = Ningbo[['menuo','actual_TT']].copy()
In [1171]:
from sklearn.linear_model import LinearRegression
In [1172]:
X = NIN[['menuo']] 
X.head(3)
Out[1172]:
menuo
14 10
24 10
25 10
In [1173]:
y = NIN['actual_TT']
y.head(2) 
Out[1173]:
14    49
24    49
Name: actual_TT, dtype: int32
In [1174]:
model = LinearRegression()
model
Out[1174]:
LinearRegression()
In [1175]:
model.fit(X,y)
Out[1175]:
LinearRegression()
In [1176]:
NIN['prediction'] = model.predict(X)
NIN.head(10)
Out[1176]:
menuo actual_TT prediction
14 10 49 43.917630
24 10 49 43.917630
25 10 49 43.917630
26 10 49 43.917630
27 10 49 43.917630
28 10 49 43.917630
29 10 49 43.917630
55 12 40 40.922172
56 12 40 40.922172
57 12 40 40.922172
In [1177]:
plt.scatter(X,y,color='green')
plt.scatter(X,NIN['prediction'], color='tomato')
#plt.plot(X,NIN['prediction'], color='tomato') 
Out[1177]:
<matplotlib.collections.PathCollection at 0x221bfdefd60>